function addAge(age: number) {
  // 所谓【装饰器工厂】就是在装饰器外层套一层闭包
  // 在外层闭包中接收工厂参数
  // 返回的内层函数即为真正的装饰器
  return function (constructor: Function) {
    constructor.prototype.age = age;
  };
}

// 装饰器工厂
@addAge(10)
class PersonIV {
  name: string;
  age!: number;
  constructor() {
    this.name = "huihui";
  }
}

let person4 = new PersonIV();
console.log(person4.age);
